package cn.iocoder.yudao.module.pay.service.premium;

import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.pay.core.client.PayClient;
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO;
import cn.iocoder.yudao.module.pay.controller.admin.order.vo.PayOrderSubmitReqVO;
import cn.iocoder.yudao.module.pay.controller.admin.order.vo.PayOrderSubmitRespVO;
import cn.iocoder.yudao.module.pay.dal.dataobject.channel.PayChannelDO;
import cn.iocoder.yudao.module.wine.api.dto.PremiumRecordDTO;

/**
 * @author zyc
 * @createDate 2024/5/14 10:25
 */
public interface PayPremiumService {
    /**
     * 获取订单保费
     *
     * @param orderId
     * @return
     */
    PremiumRecordDTO getPremiumRecord(Long orderId);

    /**
     * 保费支付
     *
     * @param reqVO
     * @return
     */
    PayOrderSubmitRespVO payPremium(PayOrderSubmitReqVO reqVO);

    /**
     * 开通会员
     *
     * @param reqVO
     * @return
     */
    PayOrderSubmitRespVO payMembershipFees(PayOrderSubmitReqVO reqVO);

    /**
     * 通知支付单成功
     *
     * @param channelId 渠道编号
     * @param notify    通知
     */
    void notifyOrder(Long channelId, PayOrderRespDTO notify);

    void notifyPremium(Long channelId, PayOrderRespDTO notify);

    PayClient getPayClient(Long channelId);

    PayOrderSubmitRespVO payTeamFees(PayOrderSubmitReqVO reqVO);

    void notifyGuarantee(Long channelId, PayOrderRespDTO notify);
}
